if not exists (select * from sys.procedures where object_id = object_id(N'[foo].[define_LookupData_foo_type]'))
    exec sp_executesql N'create procedure [foo].[define_LookupData_foo_type] as begin return 0; end';
go
alter procedure [foo].[define_LookupData_foo_type] (
    @name varchar(32),
    @id int
)
as
begin
    if not exists (select * from [foo].[foo_types] where [id] = @id)
    insert [foo].[foo_types] ([name],[id])
    values (@name,@id);
    else
        update [foo].[foo_types] set
            [name] = @name
        where [id] = @id;

    return 0;
end
go

exec [foo].[define_LookupData_foo_type] @name='foo',@id=1;
exec [foo].[define_LookupData_foo_type] @name='bar',@id=2;
go
